package com.huluobo.a2110mvvmjetpackdemo2.viewbinding;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;

import com.huluobo.a2110mvvmjetpackdemo2.databinding.ActivityMainBinding;

/**
 * ViewBinding总结
 * 1.首先使用时,需要在app的build.gradle中开启开关,viewBinding{enable=true}
 * 2.开启后所有的xml文件都会对应的生成一个类,也就是由xml的文件名生层的驼峰命名法的实现类
 * 3.(重点) setContentView(activityMainBinding.getRoot()) 这个方法中不能直接用layout的id,需要使用binding的root来指定布局
 * 4.viewBinding的特点,具有空安全性,视图(view)绑定会对视图(view)直接引用,不需要声明
 * 5.具有类型安全性,不需要进行指定类型或者强制转换,可以自动匹配xml中控件的类型(比如在xml中是个TextView,在Java中引用的时候他就是个TextView,不需要声明,也不需要转换)
 */

public class MainActivity extends AppCompatActivity {

    private ActivityMainBinding activityMainBinding;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
//        setContentView(R.layout.activity_main);

        //学习ViewBinding之前实例化控件的方式 findViewById
//        TextView mainText = findViewById(R.id.main_text);
//        Button mainButton = findViewById(R.id.main_button);

        //ViewBinding获取实例填充布局
        activityMainBinding = ActivityMainBinding.inflate(getLayoutInflater());
        //getRoot代表当前布局的根目录,也就是最外层的Layout
        setContentView(activityMainBinding.getRoot());

        activityMainBinding.mainText.setText("123");
        activityMainBinding.mainEdit.setHint("请输入文字");
        activityMainBinding.mainBtn.setOnClickListener(v -> {
            Intent intent = new Intent(this, MainActivity.class);
            startActivity(intent);
        });

    }

}